﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	[DataContract]
	public enum ПорядокРегистрацииСчетовФактурНаАванс
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"e6e1b970-4ab1-47f5-b27e-8bc81eeebefa\", \"Представление\":\"НаВсеАвансы\"}")]
		НаВсеАвансы = 0,//Регистрировать счета-фактуры всегда при получении аванса
		[EnumMember(Value = "{\"Ссылка\":\"c3e6b358-fd05-4cdf-b19b-42737050c78d\", \"Представление\":\"КромеЗачтенныхВТечениеПятиДней\"}")]
		КромеЗачтенныхВТечениеПятиДней = 1,//Не регистрировать счета-фактуры на авансы, зачтенные в течение 5-ти календарных дней
		[EnumMember(Value = "{\"Ссылка\":\"72814611-f607-45f4-a0b1-8c6c15d41fbf\", \"Представление\":\"КромеЗачтенныхВТечениеМесяца\"}")]
		КромеЗачтенныхВТечениеМесяца = 2,//Не регистрировать счета-фактуры на авансы, зачтенные до конца месяца
		[EnumMember(Value = "{\"Ссылка\":\"0a0b644d-b1d3-4ba8-9a58-563ce43ed474\", \"Представление\":\"КромеЗачтенныхВТечениеНалоговогоПериода\"}")]
		КромеЗачтенныхВТечениеНалоговогоПериода = 3,//Не регистрировать счета-фактуры на авансы, зачтенные до конца налогового периода
		[EnumMember(Value = "{\"Ссылка\":\"2a3394d2-745d-4c4f-9808-394e1d2fe64d\", \"Представление\":\"НеРегистрироватьСчетаФактурыНаАвансы\"}")]
		НеРегистрироватьСчетаФактурыНаАвансы = 4,//Не регистрировать счета-фактуры на авансы (п.13 ст.167 НК РФ)
	}
	public static partial class ПорядокРегистрацииСчетовФактурНаАванс_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid НаВсеАвансы = new Guid("c88b7eb2-ee1e-fabe-47f5-4ab1e6e1b970");//Регистрировать счета-фактуры всегда при получении аванса
		public static readonly Guid КромеЗачтенныхВТечениеПятиДней = new Guid("73429bb1-5070-8dc7-4cdf-fd05c3e6b358");//Не регистрировать счета-фактуры на авансы, зачтенные в течение 5-ти календарных дней
		public static readonly Guid КромеЗачтенныхВТечениеМесяца = new Guid("6c8cb1a0-d415-bf1f-45f4-f60772814611");//Не регистрировать счета-фактуры на авансы, зачтенные до конца месяца
		public static readonly Guid КромеЗачтенныхВТечениеНалоговогоПериода = new Guid("3c56589a-3ee4-74d4-4ba8-b1d30a0b644d");//Не регистрировать счета-фактуры на авансы, зачтенные до конца налогового периода
		public static readonly Guid НеРегистрироватьСчетаФактурыНаАвансы = new Guid("4e390898-2f1d-4de6-4c4f-745d2a3394d2");//Не регистрировать счета-фактуры на авансы (п.13 ст.167 НК РФ)
		public static ПорядокРегистрацииСчетовФактурНаАванс Получить(this ПорядокРегистрацииСчетовФактурНаАванс Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ПорядокРегистрацииСчетовФактурНаАванс Получить(this ПорядокРегистрацииСчетовФактурНаАванс Значение, Guid Ссылка)
		{
			if(Ссылка == НаВсеАвансы)
			{
				return ПорядокРегистрацииСчетовФактурНаАванс.НаВсеАвансы;
			}
			else if(Ссылка == КромеЗачтенныхВТечениеПятиДней)
			{
				return ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеПятиДней;
			}
			else if(Ссылка == КромеЗачтенныхВТечениеМесяца)
			{
				return ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеМесяца;
			}
			else if(Ссылка == КромеЗачтенныхВТечениеНалоговогоПериода)
			{
				return ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеНалоговогоПериода;
			}
			else if(Ссылка == НеРегистрироватьСчетаФактурыНаАвансы)
			{
				return ПорядокРегистрацииСчетовФактурНаАванс.НеРегистрироватьСчетаФактурыНаАвансы;
			}
			return ПорядокРегистрацииСчетовФактурНаАванс.ПустаяСсылка;
		}
		public static byte[] Ключ(this ПорядокРегистрацииСчетовФактурНаАванс Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ПорядокРегистрацииСчетовФактурНаАванс Значение)
		{
			switch (Значение)
			{
				case ПорядокРегистрацииСчетовФактурНаАванс.НаВсеАвансы: return НаВсеАвансы;
				case ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеПятиДней: return КромеЗачтенныхВТечениеПятиДней;
				case ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеМесяца: return КромеЗачтенныхВТечениеМесяца;
				case ПорядокРегистрацииСчетовФактурНаАванс.КромеЗачтенныхВТечениеНалоговогоПериода: return КромеЗачтенныхВТечениеНалоговогоПериода;
				case ПорядокРегистрацииСчетовФактурНаАванс.НеРегистрироватьСчетаФактурыНаАвансы: return НеРегистрироватьСчетаФактурыНаАвансы;
			}
			return Guid.Empty;
		}
	}
}